//拦截器
import axios from 'axios'
//引入进度条
import NProgress from 'nprogress'
//引入进度条的css文件
import 'nprogress/nprogress.css'; //？？？需要挂载cssloader
//实列axios
const myAxios = axios.create({
  //配置公共路径
  baseURL: '/api1',
  //超时时间
  timeout: 10000
})
// 添加请求拦截器
myAxios.interceptors.request.use(function (config) {
  // 在发送请求之前做些什么
  //进度条
  NProgress.start()
  //在ajax请求中 拦截器截取到本地token 然后放在请求头中
  //增加一个token在请求头中发送给服务端
  const token = localStorage.getItem('user_token')
  config.headers.token = token
  return config;
}, function (error) {
  NProgress.done()
  // 对请求错误做些什么
  return Promise.reject(error);
});

// 添加响应拦截器
myAxios.interceptors.response.use(function (response) {
  NProgress.done()
  //增加路由权限校验
  //如果服务器端响应过来的状态码为20000 证明用户没有权限访问
  if (response.data.code === 20000) {
    return Promise.reject({
      message:response.data.mesage,
      //添加一个属性 如果权限校验失败就会进入到这个判断中
      isLogin: false
    })
  }
  // 如果服务器返回的数据中的code 不等于10000 则返回失败的promise实列 值为错误信息
  if (response.data.code !== 10000) {
    return Promise.reject({
      message: response.data.mesage,
      isLogin: true
    })
  }
  //成功则返回data数据
  return response.data.data;
}, function (error) {
  NProgress.done()
  // 对响应错误做点什么
  return Promise.reject(error);
});

//暴露出去
export default myAxios